package com.zjj.learn.algorithmPlus.segment1.queue;

/**
 * 队列基础接口
 *
 * @author zjj_admin
 */
public interface Queue<E> {


    /**
     * 向队列的尾部插入数据
     *
     * @param value 添加数据
     * @return 是否添加成功
     */
    boolean offer(E value);

    /**
     * 从队列的头部拉取一个数据，并从队列中移除
     *
     * @return 返回头部数据，没有数据时返回 null
     */
    E poll();

    /**
     * 获取队列头部数据，不移除数据
     *
     * @return
     */
    E peek();

    /**
     * 判断队列是否为空
     *
     * @return 队列是否为空
     */
    boolean isEmpty();

    /**
     * 队列是否已经满了
     *
     * @return 队列是否已满
     */
    boolean isFull();

    /**
     * 获取队列中元素的个数
     *
     * @return 元素个数
     */
    int size();


}
